/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.com.cotelasa.scp.controlador;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.log4j.Logger;
import org.primefaces.event.DateSelectEvent;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import pe.com.cotelasa.common.controlador.MBGenerico;
import pe.com.cotelasa.scp.dominio.common.helper.SelectOneMenuHelper;
import pe.com.cotelasa.scp.controlador.backingBean.BKDetallePedidoFP;
import pe.com.cotelasa.scp.controlador.backingBean.BKFacturaProforma;
import pe.com.cotelasa.scp.controlador.backingBean.BKProducto;
import pe.com.cotelasa.scp.controlador.backingBean.BKCuentaBancaria;
import pe.com.cotelasa.scp.controlador.comando.ComandoActualizar;
import pe.com.cotelasa.scp.controlador.comando.ComandoGuardar;
import pe.com.cotelasa.scp.controlador.comando.IComando;
import pe.com.cotelasa.scp.dominio.common.Constantes;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.dominio.service.IServicioProducto;
import pe.com.cotelasa.scp.dominio.common.URLPaginacion;
import pe.com.cotelasa.scp.dominio.common.util.UtilitarioFecha;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioArticulo;
import pe.com.cotelasa.scp.dominio.service.IServicioCliente;
import pe.com.cotelasa.scp.dominio.service.IServicioTipoMoneda;
import pe.com.cotelasa.scp.dominio.service.IServicioEmpresa;
import pe.com.cotelasa.scp.dominio.service.IServicioBanco;
import pe.com.cotelasa.scp.dominio.service.IServicioCategoriaArticulo;
import pe.com.cotelasa.scp.dominio.service.IServicioCorrelativoDocumento;
import pe.com.cotelasa.scp.dominio.service.IServicioFacturaProforma;
import pe.com.cotelasa.scp.dominio.service.IServicioSede;
import pe.com.cotelasa.scp.dominio.service.IServicioTipoCambio;
import pe.com.cotelasa.scp.dominio.service.IServicioTipoDocumento;
import pe.com.cotelasa.scp.dominio.service.IServicioTipoUnidadMinima;
import pe.com.cotelasa.scp.entidad.*;
import pe.com.cotelasa.seguridad.controlador.backingBean.BKSession;
import com.lowagie.text.DocumentException;
//import org.xhtmlrenderer.pdf.ITextRenderer;

/**
 *
 * @author Esparza
 */
@Named(value = "MBFacturaProforma")
@Scope("request")
public class MBFacturaProforma extends MBGenerico implements IMantenedor, Serializable {

    private static Logger logger = Logger.getLogger(MBFacturaProforma.class);
    @Inject
    private IServicioCliente servicioCliente;
    @Inject
    private BKProducto bkProducto;
    @Inject
    private IServicioProducto servicioProducto;
    @Inject
    private IServicioTipoMoneda servicioTipoMoneda;
    @Inject
    private IServicioFacturaProforma servicioFacturaProforma;
    @Inject
    private IServicioTipoCambio servicioTipoCambio;
    @Inject
    private IServicioCategoriaArticulo servicioCategoriaArticulo;
    @Inject
    private IServicioArticulo servicioArticulo;
    @Inject
    private IServicioEmpresa servicioEmpresa;
    @Inject
    private IServicioBanco servicioBanco;
    @Inject
    private IServicioTipoDocumento servicioTipoDocumento;
    @Inject
    private IServicioCorrelativoDocumento servicioCorrelativo;
    @Inject
    private IServicioSede servicioSede;
    @Inject
    private BKDetallePedidoFP bkDetallePedidoFp;
    @Inject
    private BKFacturaProforma bkFacturaProforma;
    @Inject
    private BKCuentaBancaria bkCuentaBancaria;
    @Inject
    private IServicioTipoUnidadMinima servicioTipoUnidadMinima;
    private String URL;
    private String tipoFacturaProforma = "2";
    @Autowired
    BKSession session;
    
    
    
    public void marcarInicioBusqueda(DateSelectEvent event) {
        bkFacturaProforma.setFechaInicio(event.getDate());
    }
    
    public void marcarFinalBusqueda(DateSelectEvent event) {
        bkFacturaProforma.setFechaFinal(event.getDate());
    }
    
    public void buscarListaFacturasProformas() {
        try {
            FacturaProforma facturaProforma = bkFacturaProforma.getFacturaProformaBusqueda();
            facturaProforma.setIdEmpresa(session.getEmpresa());
            bkFacturaProforma.setListaFacturaProformaActivas(this.servicioFacturaProforma.buscarFacturaProformasPorFiltro(facturaProforma,bkFacturaProforma.getFechaInicio(),bkFacturaProforma.getFechaFinal()));
        } catch (ServiceException e) {
            e.printStackTrace();
            mostrarError("Ocurrieron algunos problemas al cargar la informacion. Vuelva a intentar.");
            logger.error(e.getMessage(), e);
        }
    }

    public String mostrarMantenimiento() {
        bkFacturaProforma.setFacturaProformaBusqueda(new FacturaProforma());
        bkFacturaProforma.getFacturaProformaBusqueda().setCodigoProforma("");
        bkFacturaProforma.getFacturaProformaBusqueda().setEstadoProforma("");
        bkFacturaProforma.getFacturaProformaBusqueda().setClienteMarca(new Cliente());
        bkFacturaProforma.getFacturaProformaBusqueda().getClienteMarca().setRazonSocial("");
        bkFacturaProforma.getFacturaProformaBusqueda().setOrigenProducto("");
        bkFacturaProforma.getFacturaProformaBusqueda().setTipoFP('%');
        bkFacturaProforma.setEmpresaFormulario(session.getEmpresa());
        //try {
            //bkFacturaProforma.setListaClientesActivos(servicioCliente.listarClientesActivos());
        bkFacturaProforma.setListaFacturaProformaActivas(null);
        /*} catch (Exception e) {
            logger.error(e.getMessage(), e);
            mostrarError("Ocurrio un error al cargar la informacion.");
        }*/
        return URLPaginacion.FacturaProforma.URL_LISTA_FACTURA_PROFORMA;
    }

    @Override
    public String nuevo() {
        this.bkFacturaProforma.setComando(new ComandoGuardar(this));
        bkFacturaProforma.setFacturaProformaFormulario(new FacturaProforma());
        bkFacturaProforma.getFacturaProformaFormulario().setIdEmpresa(bkFacturaProforma.getEmpresaFormulario());
        inicializarValores();
        if (bkFacturaProforma.getFacturaProformaFormulario().getCambioCompra() == null) {
            mostrarError("No se ha registrado el tipo de cambio de hoy");
            return URLPaginacion.FacturaProforma.URL_LISTA_FACTURA_PROFORMA;
        }

        bkFacturaProforma.getFacturaProformaFormulario().setIdCliente(new Cliente());
        bkFacturaProforma.getFacturaProformaFormulario().setIdTipoMoneda(new TipoMoneda(0));
        bkFacturaProforma.getFacturaProformaFormulario().setEstadoProforma("B");

        if (tipoFacturaProforma.equals("1")) {
            bkFacturaProforma.getFacturaProformaFormulario().setTipoFP('P');
            URL = URLPaginacion.FacturaProforma.URL_FORMULARIO_FP_PRENDA;
        } else {
            bkFacturaProforma.getFacturaProformaFormulario().setTipoFP('T');
            URL = URLPaginacion.FacturaProforma.URL_FORMULARIO_FP_TELA;
        }

        return URL;
    }

    public String nuevaFPPrenda() {
        inicializarValores();
        if (bkFacturaProforma.getFacturaProformaFormulario().getCambioCompra() == null) {
            mostrarError("No se ha registrado el tipo de cambio de hoy");
            return URLPaginacion.FacturaProforma.URL_LISTA_FACTURA_PROFORMA;
        }


        try {

            Articulo articulo = new Articulo();
            articulo.setIdCategoriaArticulo(servicioCategoriaArticulo.obtenerCategoriaArticuloPorNombre("TELA"));
            bkFacturaProforma.setListaArticulosActivos(servicioArticulo.listarArticulosPorCategoria(articulo));
            bkFacturaProforma.getFacturaProformaFormulario().setIdCliente(new Cliente());
            bkFacturaProforma.getFacturaProformaFormulario().setIdTipoMoneda(new TipoMoneda());
            bkFacturaProforma.getFacturaProformaFormulario().setEstadoProforma("E");

        } catch (ServiceException e) {
            logger.error(e.getMessage(), e);
            mostrarError("Ocurrio un error al cargar la informacion.");
        }

        return URLPaginacion.FacturaProforma.URL_FORMULARIO_FP_PRENDA;
    }

    public String nuevaFPTela() {
        inicializarValores();
        if (bkFacturaProforma.getFacturaProformaFormulario().getCambioCompra() == null) {
            mostrarError("No se ha registrado el tipo de cambio de hoy");
            return URLPaginacion.FacturaProforma.URL_LISTA_FACTURA_PROFORMA;
        }

        try {

            Articulo articulo = new Articulo();
            articulo.setIdCategoriaArticulo(servicioCategoriaArticulo.obtenerCategoriaArticuloPorNombre("TELA"));
            bkFacturaProforma.setListaArticulosActivos(servicioArticulo.listarArticulosPorCategoria(articulo));
            bkFacturaProforma.getFacturaProformaFormulario().setIdCliente(new Cliente());
            bkFacturaProforma.getFacturaProformaFormulario().setIdTipoMoneda(new TipoMoneda());
            bkFacturaProforma.getFacturaProformaFormulario().setEstadoProforma("E");

        } catch (ServiceException e) {
            logger.error(e.getMessage(), e);
            mostrarError("Ocurrio un error al cargar la informacion.");
        }

        return URLPaginacion.FacturaProforma.URL_FORMULARIO_FP_TELA;



    }

    @Override
    public String guardar() {

        try {
            generarCodigo();
            bkFacturaProforma.getFacturaProformaFormulario().setEstadoProforma("E");
            FacturaProforma facturaP = bkFacturaProforma.getFacturaProformaFormulario();
            facturaP.setUsrCreacion(session.getUsuario().getUsuario());
            facturaP.setFecCreacion(new Date());
            facturaP.setId(null);
            for (DetallePedidoFp det1 : bkDetallePedidoFp.getListaDetallePedidoFP()) {
                det1.setId(null);
                det1.setIdFacturaProforma(facturaP);
            }

            facturaP.setDetallePedidoFpCollection(new ArrayList<DetallePedidoFp>());

            facturaP.getDetallePedidoFpCollection().addAll(bkDetallePedidoFp.getListaDetallePedidoFP());

            servicioFacturaProforma.guardarFacturaProforma(facturaP);

            mostrarMensaje("Se guardo la Factura Proforma satisfactoriamente.");
            //URL = mostrarMantenimiento();
            buscarListaFacturasProformas();
            URL = URLPaginacion.FacturaProforma.URL_LISTA_FACTURA_PROFORMA;       
        } catch (ServiceException e) {
            logger.error(e.getMessage(), e);
            e.printStackTrace();
            mostrarError("Ocurrio un error al cargar la informacion.");
            URL = URLPaginacion.FacturaProforma.URL_FORMULARIO_FP_TELA;
        }


        return URL;
    }

    @Override
    public String editar() {
        this.bkFacturaProforma.setComando(new ComandoActualizar(this));
        //bkDetalleCotizacion.inicializarValores();
        try {
            inicializarValores();
            bkFacturaProforma.setFacturaProformaFormulario(servicioFacturaProforma.conseguirFacturaProformaPorId(bkFacturaProforma.getFacturaProformaFormulario().getId()));
            bkDetallePedidoFp.setListaDetallePedidoFPEditar((List<DetallePedidoFp>) bkFacturaProforma.getFacturaProformaFormulario().getDetallePedidoFpCollection());
            if (bkDetallePedidoFp.getListaDetallePedidoFPEditar() != null || bkDetallePedidoFp.getListaDetallePedidoFPEditar().size() > 0) {

                for (DetallePedidoFp det1 : bkDetallePedidoFp.getListaDetallePedidoFPEditar()) {
                    if (det1.getEstadoRegistro() == ESTADO_REGISTRO.ACTIVO.getValor()) {
                        bkDetallePedidoFp.getListaDetallePedidoFP().add(det1);
                    }
                }
            }

            if (bkFacturaProforma.getFacturaProformaFormulario().getTipoFP() == 'P') {
                URL = URLPaginacion.FacturaProforma.URL_FORMULARIO_FP_PRENDA;
            } else {
                URL = URLPaginacion.FacturaProforma.URL_FORMULARIO_FP_TELA;
            }


        } catch (ServiceException e) {
            if (bkFacturaProforma.getFacturaProformaFormulario().getTipoFP() == 'P') {
                URL = URLPaginacion.FacturaProforma.URL_LISTA_FACTURA_PROFORMA;
            } else {
                URL = URLPaginacion.FacturaProforma.URL_LISTA_FACTURA_PROFORMA;
            }
            logger.error(e.getMessage(), e);
            mostrarError("Ocurrio un error al cargar la informacion.");
        }

        return URL;

    }

    @Override
    public String actualizar() {
        try {
            FacturaProforma facturaP = bkFacturaProforma.getFacturaProformaFormulario();
            facturaP.setUsrModificacion(session.getUsuario().getUsuario());
            facturaP.setFecModificacion(new Date());
            for (DetallePedidoFp det1 : bkDetallePedidoFp.getListaDetallePedidoFPEditar()) {
                if (det1.getIdFacturaProforma() == null) {
                    det1.setIdFacturaProforma(facturaP);
                }
            }
            facturaP.setDetallePedidoFpCollection(bkDetallePedidoFp.getListaDetallePedidoFPEditar());


            servicioFacturaProforma.actualizarFacturaProforma(bkFacturaProforma.getFacturaProformaFormulario());

            mostrarMensaje("Se actualizo la Factura Proforma satisfactoriamente.");

            //URL = mostrarMantenimiento();
            buscarListaFacturasProformas();
            URL = URLPaginacion.FacturaProforma.URL_LISTA_FACTURA_PROFORMA;  

        } catch (ServiceException e) {
            e.printStackTrace();;
            logger.error(e.getMessage(), e);
            mostrarError("Ocurrio un error al cargar la informacion.");
            URL = URLPaginacion.FacturaProforma.URL_FORMULARIO_FP_TELA;
        }
        return URL;
    }

    public void inicializarValores() {
        try {
            bkDetallePedidoFp.inicializarValores();
            bkFacturaProforma.setListaTipoMonedaActivos(servicioTipoMoneda.listarTipoMonedasActivos());
            TipoCambio tipoCambio = new TipoCambio();
            tipoCambio.setFecCreacion(new Date());
            tipoCambio = servicioTipoCambio.ValidarTipoCambio(tipoCambio);
            if (bkFacturaProforma.getComando().getNombre().equals("Guardar") && tipoCambio != null) {
                bkFacturaProforma.getFacturaProformaFormulario().setCambioCompra(tipoCambio.getCompra());
                bkFacturaProforma.getFacturaProformaFormulario().setCambioVenta(tipoCambio.getVenta());
            }
            bkFacturaProforma.setListaClientesActivos(servicioCliente.listarClientesActivos());
            bkFacturaProforma.setListaTipoUnidadMinima(servicioTipoUnidadMinima.listarTipoUnidadMinimasActivos());
        } catch (ServiceException e) {
            logger.error(e.getMessage(), e);
            mostrarError("Ocurrio un error al cargar la informacion.");
        }
    }

    private void cargarComboPrendas() {
        try {
            bkProducto.setListaTodasProductosPrenda(servicioProducto.listarProductosPrendaActivos());
            bkProducto.setListaProductoPrenda(SelectOneMenuHelper.listaProductosPrenda((List<Producto>) servicioProducto.listarProductosPrendaActivos()));
//            bkCuentaBancaria.setListaTipoMoneda(SelectOneMenuHelper.listaTipoMonedas((List<TipoMoneda>) servicioTipoMoneda.listarTipoMonedasActivos()));
        } catch (ServiceException e) {
            logger.error(e.getMessage(), e);
            mostrarError("Ocurrio un error al cargar la informacion.");
        }
    }

    public void cargarTipoMonedaSeleccionado() {
        try {
            if(bkFacturaProforma.getFacturaProformaFormulario().getIdTipoMoneda().getId() != 0){
                bkFacturaProforma.getFacturaProformaFormulario().setIdTipoMoneda(
                    servicioTipoMoneda.conseguirTipoMonedaPorId(bkFacturaProforma.getFacturaProformaFormulario().getIdTipoMoneda().getId()));
            }
            
        } catch (ServiceException e) {
            logger.error(e.getMessage(), e);
            mostrarError("Ocurrio un error al cargar la informacion.");
        }
    }

    public void calcularSaldo() {
        bkFacturaProforma.setSaldo(100 - bkFacturaProforma.getFacturaProformaFormulario().getAdelanto());
    }

    public void marcarInicio(DateSelectEvent event) {
        bkFacturaProforma.getFacturaProformaFormulario().setFechaFacturaProforma(event.getDate());
    }

    public void marcarFinal(DateSelectEvent event) {
        bkFacturaProforma.getFacturaProformaFormulario().setFechaDelivery(event.getDate());
    }

    public void generarCodigo() {

        CorrelativoDocumento correlativo = new CorrelativoDocumento();
        correlativo.setAnio(UtilitarioFecha.obtenerAnioActual());

        TipoDocumento tipoDocumento = new TipoDocumento();
        tipoDocumento.setNombre(Constantes.TipoDocumento.TIPO_DOC_FACTURA_PROFORMA);

        String format = "%1$05d";

        Integer numero = 0;
        try {
            correlativo.setIdTipoDocumento(servicioTipoDocumento.obtenerTipoDocumentoPorNombre(tipoDocumento));
            //correlativo.setIdsede(servicioSede.conseguirSedePorId(1));
            correlativo.setIdsede(session.getSede());
            CorrelativoDocumento correlativoEncontrado = servicioCorrelativo.obtenerCorrelativoDocumentoPorAnio(correlativo);
            if (correlativoEncontrado == null) {

                correlativo.setUsrCreacion(session.getUsuario().getUsuario());
                correlativo.setFecCreacion(new Date());
                correlativo.setNumero("00002");
                servicioCorrelativo.guardarCorrelativoDocumento(correlativo);
                bkFacturaProforma.getFacturaProformaFormulario().setCodigoProforma("FP" + bkFacturaProforma.getFacturaProformaFormulario().getTipoFP() + "-" + correlativo.getAnio() + "-00001");

            } else {

                correlativo = correlativoEncontrado;
                numero = Integer.parseInt(correlativo.getNumero());
                bkFacturaProforma.getFacturaProformaFormulario().setCodigoProforma("FP" + bkFacturaProforma.getFacturaProformaFormulario().getTipoFP() + "-" + correlativo.getAnio() + "-" + String.format(format, numero));
                numero++;
                correlativo.setNumero(String.format(format, numero));
                correlativo.setUsrModificacion(session.getUsuario().getUsuario());
                correlativo.setFecModificacion(new Date());
                servicioCorrelativo.actualizarCorrelativoDocumento(correlativo);

            }

        } catch (ServiceException e) {
            logger.error(e.getMessage(), e);
            mostrarError("Ocurrio un error al cargar la informacion.");
        }


    }

    public void cargarCuentaBancaria() throws ServiceException {
        Iterator it = bkCuentaBancaria.getListaTodasCuentaBancarias().iterator();
        Integer cbseleccionada = bkCuentaBancaria.getIdCuentaBancariaFP();
        while (it.hasNext()) {
            CuentaBancaria aux = (CuentaBancaria) (it.next());
            if (aux.getId().equals(cbseleccionada)) {
                bkCuentaBancaria.setCuentaBancariaFP(aux);
            }
        }
        bkFacturaProforma.getFacturaProformaFormulario().setCuentaBancaria(bkCuentaBancaria.getCuentaBancariaFP().getNumeroCuenta());
        Banco banco = servicioBanco.conseguirBancoPorId(bkCuentaBancaria.getCuentaBancariaFP().getIdBanco().getId());
        bkFacturaProforma.getFacturaProformaFormulario().setBancoNombre(banco.getNombre());
    }

    @Override
    public void eliminar(ActionEvent actionEvent) {
        FacturaProforma facturaP = bkFacturaProforma.getFacturaProformaSeleccionado();
        facturaP.setEstadoRegistro(ESTADO_REGISTRO.INACTIVO.getValor());
        facturaP.setUsrModificacion(session.getUsuario().getUsuario());
        facturaP.setFecModificacion(new Date());
        try {
            servicioFacturaProforma.actualizarFacturaProforma(facturaP);
            buscarListaFacturasProformas();
            mostrarMensaje("Se elimino la Factura Proforma satisfactoriamente");
        } catch (ServiceException e) {
            mostrarError("Ocurrieron algunos problemas al eliminar la informacion. Vuelva a intentar.");
            logger.error(e.getMessage(), e);
        }
    }

    @Override
    public String ver() {
        editar();

        if (bkFacturaProforma.getFacturaProformaFormulario().getTipoFP() == 'P') {
            URL = URLPaginacion.FacturaProforma.URL_VER_FP_PRENDA;
        } else {
            
            int i = bkDetallePedidoFp.getListaDetallePedidoFP().size();
            int count = 1;
            bkDetallePedidoFp.setNumFilasTotalAcum(0);
            while (i > 0) {
                if (count == 1) {
                    i = i - 33;
                    bkDetallePedidoFp.getNumTablas().add(33);
                } else {
                    i = i - 50;
                    bkDetallePedidoFp.getNumTablas().add(50);

                }
                count++;

            }
            System.out.println("numero de tablas es : " + bkDetallePedidoFp.getNumTablas().size());
            System.out.println("lista de tablas : " + bkDetallePedidoFp.getNumTablas());
            
            URL = URLPaginacion.FacturaProforma.URL_VER_FP_TELA;
        }

        return URL;
    }

    @Override
    public String aceptar() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public String retroceder() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public String cancelar() {
        return URLPaginacion.FacturaProforma.URL_LISTA_FACTURA_PROFORMA;
        //return mostrarMantenimiento();
    }

    public String getTipoFacturaProforma() {
        return tipoFacturaProforma;
    }

    /**
     * @param tipoFacturaProforma the tipoFacturaProforma to set
     */
    public void setTipoFacturaProforma(String tipoFacturaProforma) {
        this.tipoFacturaProforma = tipoFacturaProforma;
    }
    
    public void elegirClienteMarca() {
        System.out.println("cliente marca: "+bkFacturaProforma.getClienteMarca());
        /*if(bkFacturaProforma.getClienteMarca() != null){
            bkFacturaProforma.getFacturaProformaFormulario().setClienteMarca(bkFacturaProforma.getClienteMarca());
        }*/
        
    }
    
    public List<DetallePedidoFp> buscarListaMostrar(int numTabla) {
        System.out.println("el numero de tabla actual: " + numTabla);
        List<DetallePedidoFp> lista = new ArrayList<DetallePedidoFp>();
        //numTabla-=1;
        int j = 0;
        for (int k = 0; k < numTabla; k++) {
            j += bkDetallePedidoFp.getNumTablas().get(k);
        }
        //int j = numTabla*bkDetallePedidoOp.getNumTablas().get(numTabla);
        for (int i = j; i < j + bkDetallePedidoFp.getNumTablas().get(numTabla); i++) {
            if (i < bkDetallePedidoFp.getListaDetallePedidoFP().size()) {
                lista.add(bkDetallePedidoFp.getListaDetallePedidoFP().get(i));

            } else {
                break;
            }

        }

        /*if(numTabla == 0){
            
         }else{
        
         }*/
        return lista;
    }

    public int sumarUno() {
        bkDetallePedidoFp.setNumFilasTotalAcum(bkDetallePedidoFp.getNumFilasTotalAcum() + 1);
        return bkDetallePedidoFp.getNumFilasTotalAcum();
    }

    public boolean isRendered(int count) {
        count++;
        if (count == bkDetallePedidoFp.getNumTablas().size()) {
            return true;
        } else {
            return false;
        }
    }
    
    /*public void createPDF() throws IOException, DocumentException  {
        ver();
    String inputFile = "pruebaPDF.xhtml";
        String url = new File(inputFile).toURI().toURL().toString();
        String outputFile = "firstdoc.pdf";
        OutputStream os = new FileOutputStream(outputFile);
        
        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocument(url);
        renderer.layout();
        renderer.createPDF(os);
        
        os.close();
}*/
/*
 * 
 public void createPDF() {
    FacesContext facesContext = FacesContext.getCurrentInstance();
    ExternalContext externalContext = facesContext.getExternalContext();
    String servername = externalContext.getRequestServerName();
    String port = String.valueOf(externalContext.getRequestServerPort());
    String appname = externalContext.getRequestContextPath();
    String protocol = externalContext.getRequestScheme();
    this.url = protocol + "://" + servername + ":" + port + appname + PDF_PAGE;
    try {
        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocument(new URL(url).toString());
        renderer.layout();
        HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
        response.reset();
        response.setContentType("application/pdf");
        response.setHeader("Content-Disposition", "inline; filename=\"" + PDF_FILE_NAME + "\"");
        OutputStream browserStream = response.getOutputStream();
        renderer.createPDF(browserStream);

    } catch (Exception ex) {
        Logger.getLogger(PdfBean.class.getName()).log(Level.SEVERE, null, ex);
    }
    facesContext.responseComplete();
}
 */
}
